import logging

import  requests
import unittest

from parameterized import parameterized

import utils
from api.loginApi import loginApi

# 2.定义测试用例的类
class Testlogin(unittest.TestCase):
    #方法级
    def setUp(self) -> None:
        #实例化封装类
        self.login_api = loginApi()

    #登录成功(正确的手机号码和密码)
    @parameterized.expand(utils.read_json("login_case_data"))
    def test01_login_success(self,json_dict,exp_status_code,exp_success,exp_code,exp_message):
        #调用封装的登录接口的方法,获取响应数据
        # json_dict ={"mobile":"13800000001","password":"123456"}
        res = self.login_api.login(json_dict)
        #获取字典类型的响应体数据
        res_dict = res.json()      #打印到日志
        logging.info("登录接口返回的响应数据:{}".format(res_dict))
        print(res_dict)
        #断言
        # #断言状态码
        # self.assertEqual(200,res.status_code)
        # #断言响应体的数据
        # #断言success
        # self.assertEqual(True,res_dict.get("success"))
        # #断言code
        # self.assertEqual(10000,res_dict.get("code"))
        # #断言message
        # self.assertIn("成功",res_dict.get("message"))
        utils.common_assert(self, res,exp_status_code,exp_success,exp_code,exp_message)

    # 不运行/跳过
    @unittest.skip(reason="跳过")
    # 登录失败(请求体为空)
    def test02_login_json_is_none(self):
        json_dict =None
        res =self.login_api.login(json_dict)
        res_dict = res.json()
        logging.info("登录接口返回的响应数据:{}".format(res_dict))
        # #断言
        # self.assertEqual(200,res.status_code)
        # self.assertEqual(False,res_dict.get("success"))
        # self.assertEqual(99999,res_dict.get("code"))
        # self.assertIn("系统繁忙",res_dict.get("message"))
        utils.common_assert(self,res,200,False,99999,"抱歉")